package com.chrray.position.util.file;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * 上传文件帮助类
 *
 * @author Administrator
 */
@Slf4j
public class UploadFileUtil {

    /**
     * 上传文件
     *
     * @param file      文件
     * @param file      文件保存文件夹
     * @param type_path 保存位置
     * @return
     */
    public String uploadFile(MultipartFile file, String filePath, String type_path) {
        try {
            // 获取保存文件的路径
            String path = filePath + type_path;

            // 文件保存地址
            SimpleDateFormat sdf = new SimpleDateFormat("yyyyMM");
            String ymd = sdf.format(new Date());
            String imageDate = File.separator + ymd + File.separator;
            path += imageDate;

            // 路径可能不存在，要对其判断，如果不存在则创建
            File sourceFolder = new File(path);
            if (!sourceFolder.exists()) {
                // 创建文件夹
                boolean dirsCreated = sourceFolder.mkdirs();
                if (!dirsCreated) {
                    log.error("Failed to create directories: {}", path);
                    return "";
                }
            }

            // 文件原名称（含后缀名）
            String fileName = file.getOriginalFilename();
            // 文件名称（不含后缀名）
            String realName = fileName.substring(0, fileName.lastIndexOf('.'));
            // 文件类型（后缀名）
            String type = fileName.indexOf(".") != -1 ? (fileName.substring(fileName.lastIndexOf(".") + 1)) : null;
            String lowerCase = type.toLowerCase();

            // 生成实际存储的真实文件名
            String saveName = (UUID.randomUUID().toString()).replace("-", "");
            // 文件存放的真实路径
            String thisfilePath = path + saveName + "." + lowerCase;
            log.info("文件存储路径={}", thisfilePath);

            // 转存文件到指定的路径
            File destFile = new File(thisfilePath);
            file.transferTo(destFile);

            return thisfilePath;
        } catch (Exception e) {
            log.error("File upload failed", e);
            return "";
        }
    }




}
